﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BL;
using System.Data;
using BE;

namespace UI.Tesoreria
{
    public partial class FrmTipoDocumentoCaja : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                CargarGrilla();
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            CargarGrilla();
        }


        private void CargarGrilla()
        {
            LabelErrorListado.Text = "";

            try
            {

                TipoDocumento_BL tipo = new TipoDocumento_BL();
                DataTable listado = tipo.Listado(txtCodigoFiltro.Text.Trim(), txtNombreFiltro.Text.Trim(), "Caja");
                GridTipoDocumento.DataSource = listado;
                GridTipoDocumento.DataBind();

                if (listado.Rows.Count < 1)
                {

                    throw new Exception("No se encontraron resultados");
                }


            }
            catch (Exception ex)
            {
                LabelErrorListado.Text = ex.Message.ToString();
            }


        }

        protected void GridTipoDocumento_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            LabelErrorListado.Text = "";
            try
            {
                if (e.CommandName.Equals("Eliminar"))
                {
                    LinkButton lb = (LinkButton)e.CommandSource;
                    GridViewRow gvr = (GridViewRow)lb.NamingContainer;
                    int id = (int)GridTipoDocumento.DataKeys[gvr.RowIndex].Value;

                    TipoDocumento_BL tipo_bl = new TipoDocumento_BL();
                    tipo_bl.Eliminar(id.ToString());
                    CargarGrilla();
                }


                if (e.CommandName.Equals("Modificar"))
                {
                    LinkButton lb = (LinkButton)e.CommandSource;
                    GridViewRow gvr = (GridViewRow)lb.NamingContainer;
                    int id = (int)GridTipoDocumento.DataKeys[gvr.RowIndex].Value;
                    LimpiarDetalle();
                    TipoDocumento_BL tipo_bl = new TipoDocumento_BL();
                    RecuperarTipoDocumento(tipo_bl.obtenerTipoCajaPorId(id.ToString()));
                    formularioNuevo.Show();
                }

            }
            catch (Exception ex)
            {
                LabelErrorListado.Text = ex.Message;
            }
        }



        protected void GridTipoDocumento_RowEditing(object sender, GridViewEditEventArgs e)
        {
            var llaves = GridTipoDocumento.DataKeys[e.NewEditIndex].Values;
            Int32 id = (Int32)llaves[0];
            LimpiarDetalle();
            TipoDocumento_BL tipo_bl = new TipoDocumento_BL();
            RecuperarTipoDocumento(tipo_bl.obtenerTipoCajaPorId(id.ToString()));
            formularioNuevo.Show();
        }

        protected void GridTipoDocumento_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
        {
            CargarGrilla();
        }


        private void LimpiarDetalle()
        {
            labelID.Text = "";
            txtCodigo.Text = "";
            txtNombre.Text = "";
            ComboTipo.SelectedIndex = -1;
            txtImpuesto.Text = "";
            txtSerie.Text = "";
            txtNumeracionActual.Text = "";
            txtNumeracionLongitud.Text = "";

        }

        private void RecuperarTipoDocumento(TipoDocumentoCaja tipocp)
        {
            labelID.Text = tipocp.IDTipoCp.ToString();
            txtCodigo.Text = tipocp.Codigo;
            txtNombre.Text = tipocp.Nombre;
            ComboTipo.Text = tipocp.TipoMovimiento;
            txtImpuesto.Text = tipocp.Impuesto.ToString();
            txtSerie.Text = tipocp.Serie_Codigo;
            txtNumeracionActual.Text = tipocp.NumeracionActual.ToString();
            txtNumeracionLongitud.Text = tipocp.Numeracion_Longitud.ToString();
        }



        private void Grabar(TipoDocumentoCaja tipo, String operacion)
        {
            tipo.Codigo = txtCodigo.Text.ToUpper();
            tipo.Nombre = txtNombre.Text.ToUpper();
            tipo.TipoMovimiento = ComboTipo.Text;

            if (tipo.TipoMovimiento.Equals("ENTRADA")) 
            {
                tipo.Entidad = "data_EntradaCaja";
            } 
            else if (tipo.TipoMovimiento.Equals("SALIDA")){
                tipo.Entidad = "data_SalidaCaja";
            }

            tipo.Impuesto = Convert.ToInt32(txtImpuesto.Text);
            tipo.Serie_Codigo = txtSerie.Text;
            tipo.NumeracionActual = Convert.ToInt32(txtNumeracionActual.Text);
            tipo.Numeracion_Longitud = Convert.ToInt32(txtNumeracionLongitud.Text);
            TipoDocumento_BL tipo_bl = new TipoDocumento_BL();
            if (operacion.Equals("NUEVO"))
            {
                tipo.IDCreadoPor = User.Identity.Name;
                tipo_bl.InsertarTipoCaja(tipo);
            }
            else
            {
                tipo.IDModificadoPor = User.Identity.Name;
               tipo_bl.ActualizarTipoDocumentoCaja(tipo);
            }
            CargarGrilla();
        }

        protected void btnNuevoTipoCp_Click(object sender, EventArgs e)
        {
            LabelError.Text = "";
            try
            {
                if (labelID.Text.Equals(""))
                {
                    if (txtCodigo.Text.Length == 0)
                    {
                        LabelError.Text = "Ingrese Código";
                        txtCodigo.Focus();
                        return;
                    }
                    else if (txtNombre.Text.Length == 0)
                    {
                        LabelError.Text = "Ingrese Nombre";
                        txtNombre.Focus();
                        return;
                    }
                    else if (txtImpuesto.Text.Length == 0)
                    {
                        LabelError.Text = "Ingrese Impuesto";
                        txtImpuesto.Focus();
                        return;
                    }
                    else if (txtSerie.Text.Length == 0)
                    {
                        LabelError.Text = "Ingrese Serie";
                        txtSerie.Focus();
                        return;
                    }
                    else if (txtNumeracionActual.Text.Length == 0)
                    {
                        LabelError.Text = "Ingrese Numeración Actual";
                        txtNumeracionActual.Focus();
                        return;
                    }
                    else if (TxtNumeracionHasta.Text.Length == 0)
                    {
                        LabelError.Text = "Ingrese Numeracion Hasta";
                        TxtNumeracionHasta.Focus();
                        return;
                    }
                    else if (txtNumeracionLongitud.Text.Length == 0)
                    {
                        LabelError.Text = "Ingrese Longitud";
                        txtNumeracionLongitud.Focus();
                        return;
                    }
                    else
                    {
                        TipoDocumentoCaja tipo = new TipoDocumentoCaja();
                        Grabar(tipo, "NUEVO");
                    }
                }
                else
                {
                    TipoDocumento_BL tipo_bl = new TipoDocumento_BL();
                    TipoDocumentoCaja tipo = tipo_bl.obtenerTipoCajaPorId(labelID.Text.ToString());
                    Grabar(tipo, "Modificar");
                }
                formularioNuevo.Hide();
                CargarGrilla();
            }
            catch (Exception ex)
            {
                LabelError.Text = ex.Message.ToString();
            }
        }

        protected void BtnCancelarCp_Click(object sender, EventArgs e)
        {
            formularioNuevo.Hide();
        }

        protected void btnNuevo_Click(object sender, EventArgs e)
        {
            LabelErrorListado.Text = "";
            try
            {
                LimpiarDetalle();
                formularioNuevo.Show();
                CargarGrilla();
            }
            catch (Exception ex)
            {
                LabelErrorListado.Text = ex.Message.ToString();
            }
            
        }



    }
}